package com.ihr360.rest.core;

/**
 * Configuration options for enum value translation.
 *
 */
public interface Ihr360EnumTranslationConfiguration {

    /**
     * Configures whether the default translation of enum names shall be applied. Defaults to {@literal true}. This means
     * the configuration will turn enum names into human friendly {@link String}s and also parse them if - only if - no
     * explicit translation is available.
     *
     * @param enableDefaultTranslation whether to enable the default translation of enum names.
     */
    void setEnableDefaultTranslation(boolean enableDefaultTranslation);

    /**
     * Configures whether to always accept the raw enum name when parsing. This is useful if clients were used to send the
     * Java enum names shall not be broken even if on the serialization side enum translation is activated.
     *
     * @param parseEnumNameAsFallback whether to parse the raw enum value as fallback, even if an explicit translation is
     *          available.
     */
    void setParseEnumNameAsFallback(boolean parseEnumNameAsFallback);
}